package dao;


import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.ClienteFisicoModel;

/**
 *
 * @author WELISSON
 */
public class ClienteFisicoDAO extends GenericDAO{
    public void salvar(ClienteFisicoModel cliente) throws SQLException {
        String insert = "INSERT INTO cliente_fisico(nome, logradouro, email, complemento, numero, cpf, rg) "
                + "VALUES(?,?,?,?,?,?,?)";
        save(insert, cliente.getNome(), cliente.getLogradouro(), cliente.getEmail(), cliente.getComplemento(),
                cliente.getNumero(), cliente.getCpf(), cliente.getRg());
    }
    
    public int salvarRetornarId(ClienteFisicoModel cliente) throws SQLException {
        String insert = "INSERT INTO cliente_fisico(nome, logradouro, email, complemento, numero, cpf, rg) "
                + "VALUES(?,?,?,?,?,?,?)";
        System.out.println(cliente.getLogradouro());
        
        return saveReturnId(insert, cliente.getNome(), cliente.getLogradouro(), cliente.getEmail(), cliente.getComplemento(),
                cliente.getNumero(), cliente.getCpf(), cliente.getRg());
    }
 
    public void alterar(ClienteFisicoModel cliente) throws SQLException {
        String update = "UPDATE cliente_fisico " +
                "SET nome = ?, logradouro = ?, email = ?, complemento = ?, numero = ?, cpf = ?, rg = ? " +
                "WHERE matricula = ?";
        update(update, cliente.getMatricula(), cliente.getNome(), cliente.getLogradouro(), cliente.getEmail(),
                cliente.getComplemento(), cliente.getNumero(), cliente.getCpf(), cliente.getRg());
    }
 
    public void excluir(int id) throws SQLException {
        String delete = "DELETE FROM CONTATOS WHERE matricula = ?";
        delete(delete, id);
    }
    public List<ClienteFisicoModel> findClienteFisico() throws SQLException{
        
        List<ClienteFisicoModel> clientes = new ArrayList<ClienteFisicoModel>();
 
        String select = "SELECT * FROM cliente_fisico";
 
        PreparedStatement stmt = 
            getConn().prepareStatement(select);
             
        ResultSet rs = stmt.executeQuery();
 
        while (rs.next()) {
            ClienteFisicoModel cliente = new ClienteFisicoModel();
            cliente.setMatricula(rs.getInt("matricula"));
            cliente.setNome(rs.getString("nome"));
            cliente.setLogradouro(rs.getString("logradouro"));
            cliente.setEmail(rs.getString("email"));
            cliente.setComplemento(rs.getString("complemento"));
            cliente.setNumero(rs.getInt("numero"));
            cliente.setCpf(rs.getString("cpf"));
            cliente.setRg(rs.getString("rg"));
            clientes.add(cliente);
        }
 
        rs.close();
        stmt.close();
 
        return clientes;
    }
 
    public List<ClienteFisicoModel> findByArgument(String argumento, String pesquisa) throws SQLException{
        
        List<ClienteFisicoModel> clientes = new ArrayList<ClienteFisicoModel>();
        
        String select = "SELECT * FROM CONTATOS WHERE ? = ?";
        PreparedStatement stmt = 
            getConn().prepareStatement(select);
             
        stmt.setString(1, argumento);
        stmt.setString(2, pesquisa);
        ResultSet rs = stmt.executeQuery();
 
        while (rs.next()) {
            ClienteFisicoModel cliente = new ClienteFisicoModel();
            cliente.setMatricula(rs.getInt("matricula"));
            cliente.setNome(rs.getString("nome"));
            cliente.setLogradouro(rs.getString("logradouro"));
            cliente.setEmail(rs.getString("email"));
            cliente.setComplemento(rs.getString("complemento"));
            cliente.setNumero(rs.getInt("numero"));
            cliente.setCpf(rs.getString("cpf"));
            cliente.setRg(rs.getString("rg"));
            clientes.add(cliente);
        }
 
        rs.close();
        stmt.close();
 
        return clientes;
    }
    
    public void salvarTelefone(int matricula,String telefone,String tipo) throws SQLException{
        String insert = "INSERT INTO telefone_cliente(matricula, telefone, tipo) VALUES (?,?,?)";
        save(insert,matricula, telefone, tipo);
    }
}
